From: Florian Müllner Date: Wed, 14 Sep 2016 20:44:12 +0000 (+0200) Subject: altTab: Improve cycling to a window on another workspace X-Git-Tag: archive/raspbian/50.5-1+rpi1~1^2~1013^2^2~711 X-Git-Url: https://dgit.raspbian.org/%22http://www.example.com/cgi/%22/%22http:/www.example.com/cgi/%22?a=commitdiff_plain;h=a029a3505039de17e0b4fa7593e825a079d115a9;p=gnome-shell.git altTab: Improve cycling to a window on another workspace Both 'cycle-group' and 'cycle-window' shortcuts allow cycling through windows on all workspaces. While this works, it looks quite broken since we started showing clones for highlighting: the selected window vanishes (when its clone is destroyed), then slides back in with its workspace. Instead, slide the selected window to its workspace like we do for the 'move-to-workspace-*' shortcuts. https://bugzilla.gnome.org/show_bug.cgi?id=771536 --- diff --git a/js/ui/altTab.js b/js/ui/altTab.js index c2217075b..27aa2d7bf 100644 --- a/js/ui/altTab.js +++ b/js/ui/altTab.js @@ -444,7 +444,21 @@ const CyclerPopup = new Lang.Class({ }, _finish: function() { - Main.activateWindow(this._items[this._selectedIndex]); + let window = this._items[this._selectedIndex]; + let ws = window.get_workspace(); + let activeWs = global.screen.get_active_workspace(); + + if (activeWs == ws) { + Main.activateWindow(window); + } else { + // If the selected window is on a different workspace, we don't + // want it to disappear, then slide in with the workspace; instead, + // always activate it on the active workspace ... + activeWs.activate_with_focus(window, global.get_current_time()); + + // ... then slide it over to the original workspace if necessary + Main.wm.actionMoveWindow(window, ws); + } this.parent(); },